char *str = "abcde"; 与 char str[] ="abcde"; 有何区别?

来源:百度知道 编辑:UC知道 时间:2024/06/18 14:48:36
如题.
赫赫,谢谢一楼 22采3纳9 的好意.
不过我的钱多得用不完,而且笔记本也已经有了.
所以奖金与奖品您留着自个儿用吧.

不一样,char *str = "abcde"; 这个定义出来的是个常量,char str[] ="abcde"; 这个定义的是数组,你要不相信的话,可以做个简单的联系
char *str = "abcde"; str[1] = "b";这个就是错误的,而第二个就可以

区别还是很大的。

1,char *str这个没有实际的内存空间,所指的只是"abcde"字符串而已,所以不能修改其值. 而char str[]这个是真正的把"abcde"保存在了内存中,有实际内存空间,所以,可以修改.

2,以指针角度来看,char *str指针可以移动(可以进行str++,str--),但是char str[]不能移动.因为数组可以看成一个常指针.

3,大小.. 凡是指针,32位系统均是4个字节.也就是
char *str="abcde";
sizeof(str)为4;
而数组却可以得出其实际大小.
char str[]="abcde";
sizeof(str)为6(末尾'\0'字符);

当然,strlen(str)都是一样的为5.

两者是一样的,数组名即为一个指针

一样的,str纪录的都是头指针

区别就大了,一个是指针,一个是数组。